package com;

import com.solution.stack.Solution;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

/*
给出一个字符串s（仅含有小写英文字母和括号）。

请你按照从括号内到外的顺序，逐层反转每对匹配括号中的字符串，并返回最终的结果。

注意，您的结果中 不应 包含任何括号。


示例 1：

输入：s = "(abcd)"
输出："dcba"
示例 2：

输入：s = "(u(love)i)"
输出："iloveu"
解释：先反转子字符串 "love" ，然后反转整个字符串。
示例 3：

输入：s = "(ed(et(oc))el)"
输出："leetcode"
解释：先反转子字符串 "oc" ，接着反转 "etco" ，然后反转整个字符串。
示例 4：

输入：s = "a(bcdefghijkl(mno)p)q"
输出："apmnolkjihgfedcbq"

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/reverse-substrings-between-each-pair-of-parentheses
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test {
    public static void main(String[] args) {
        List<String> testArray = new ArrayList<>();
        testArray.add("(abcd)");
        testArray.add("a(abcd)");
        testArray.add("(u(love)i)");
        testArray.add("(ed(et(oc))el)");
        testArray.add("a(bcdefghijkl(mno)p)q");

        List<String> answer = new ArrayList<>();
        answer.add("dcba");
        answer.add("adcba");
        answer.add("iloveu");
        answer.add("leetcode");
        answer.add("apmnolkjihgfedcbq");

        int total_case = testArray.size();
        int success_case = 0;
//        com.solution.stack.Solution solution = new com.solution.stack.Solution();
        com.solution.preprocessing.Solution solution = new com.solution.preprocessing.Solution();
        for ( int i = 0 ; i < total_case ; i++ ) {
            String result = solution.reverseParentheses(testArray.get(i));
            if ( answer.get(i).equals(result) )
                success_case++;
        }

        DecimalFormat df = new DecimalFormat();
        df.setMaximumFractionDigits(2);
        df.setMinimumFractionDigits(2);
        String percentage = df.format((double) success_case / total_case * 100.00) + "%";
        System.out.println("测试案例通过率：" + percentage);

    }
}
